package com.leyou.xxl;

import com.leyou.common.utils.AliyunUtils;
import com.leyou.common.utils.RedisConstant;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Set;


@JobHandler(value = "leyou.brand.clean.img.job") //  web配置JobHandler的名称
@Component
public class CleanOssImage extends IJobHandler {

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 但是spring的@Scheduled只支持6位，年份是不支持的，带年份的7位格式会报错：
     * Cron expression must consist of 6 fields (found 7 in "1/5 * * * * ? 2018")
     * 通过cron表达式 来配置 该方法的执行周期
     * **/

    @Override
    public ReturnT<String> execute(String s) throws Exception {
        //  清理图片。。。。   获取 redis  两个 set 集合      调用 interest/ difference方法  获取  多余图片信息
        //    将集合1  比  集合2  多出来的数据  返回
        Set<String> difference = redisTemplate.opsForSet().difference(RedisConstant.BRAND_PIC_RESOURCES, RedisConstant.BRAND_PIC_DB_RESOURCES);
        //  2  遍历集合  oss 对应图片删除
        if(difference.size()!=0){
            for (String filename : difference) {
                filename = StringUtils.substringAfter(filename,"com/");
                //filename = filename.substring(55,filename.length()-1);
                //System.out.println(filename);
                AliyunUtils.deleteFile(filename);
            }
            //  阿里云上 多余图片清理完成
            redisTemplate.delete(RedisConstant.BRAND_PIC_RESOURCES);
            redisTemplate.delete(RedisConstant.BRAND_PIC_DB_RESOURCES);
            System.out.println("----阿里云图片清理完成 -----");
        }else{
            System.out.println("---- 任务执行了一次，不需要清理图片 -----");
        }
        return SUCCESS;
    }

}

